package d3_finally;

import java.io.*;

public class FinallyDemo02 {
    public static void main(String[] args) {
        //目标: 完成文件的复制
        //进行异常处理
        InputStream fIs = null;
        OutputStream fOs = null;
        try {
            //1、创建一个字节输入流: 文件读取到内存中来
            fIs = new FileInputStream(
                    "D:\\javadevelop\\2024班\\02阶段java基础进阶\\陈某总结\\章若楠.jpg");//注意定要写成多态
            //2、创建一个字节输出流: 用于将内存在的字节进行写到文件中
            fOs = new FileOutputStream(
                    "D:\\javadevelop\\2024班\\02阶段java基础进阶\\陈某总结\\老婆.jpg");//注意定要写成多态
            //3、准备一个字节数组
            byte[] buffer = new byte[1024];
            //4、转移数据
            int len;
            while ((len = fIs.read(buffer)) != -1) {
                fOs.write(buffer, 0, buffer.length);//读到多少就倒多少
            }

            System.out.println("赋值完成");
        } catch (Exception e) {//捕获一切异常
            e.printStackTrace();//打印堆栈的信息
        } finally {
            //5、释放资源
            //提醒您, 上面可能出现异常导致两个输出流是null
            //上面已经关了,这里在关就会出线二次异常
            try {
                if (fOs != null) fOs.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (fIs != null) fIs.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("赋值完成");
        }

    }
}
